═══ 1. Bug Reports/Feature Requests ═══ Bug reports and/or feature requests may be made to one of two people, in one of several ways. Please contact Brady Flowers at Oberon Software or Kimberly Bobrow. ═══ 2. Oberon Software ═══ Oberon Software has been involved in the creation of OS/2 related products and services since 1988. Founded by Brady Flowers, Oberon Software (named for the wood sprite in Shakespeare's "A Mid-Summer Night's Dream") is committed to enhancing the software base for the ever growing community of OS/2 users and to helping foster the growth and acceptance of OS/2 as the next generation in operating systems for personal computers and workstations. Oberon products are generally marketed as shareware to keep marketing overhead to a minimum. The savings can then be devoted to further development and enhancements and customer service. Please, support the shareware concept by registering the shareware products which you use and by passing them along to others for their inspection. In addition to this program, Oberon Software offers the following products and services: o Oberon Terminal Emulator/2 (TE/2) o Oberon FSHL Command Line Executive o Oberon LstPM file viewer o Consulting Services and Custom Programming Several new products are planned for release in the near future. These will include a programmer's Async Communications library/toolkit, enhancements to all of our existing programs, and some new surprises. ═══ 2.1. Oberon Terminal Emulator/2 ═══ The Oberon Terminal Emulator/2, or TE/2, is Oberon Software's full featured, easy to use, general purpose telecommunications program for OS/2. Developed originally for OS/2 1.1, it was one the very first such programs written specifically to take advantage of the power and capabilities of OS/2. As OS/2 has grown, so has TE/2. It is now one of the most popular and widely recommended telecommunications programs for OS/2! TE/2's features include: o One of the most complete script languages to be found in any telecomm program anywhere o REXX/2 as a fully supported, optional script language o Extensive facility for running external programs and protocols o Multiple, 200 entry dialing directories o Call logging o Split screen chat mode o 48 Assignable function keys o Free technical support via the Oberon BBS! TE/2 includes these file transfer protocols: o XModem and XModem-1K o YModem and YModem-G o ZModem with automatic start-up and resume o CompuServe(tm) B-Plus protocol o Ascii file upload and capture Supported terminal emulations include: o Standard TTY (teletype) mode o ANSI-BBS and enhanced ANSI o VT100 (with VT102 and VT220 extensions) o IBM 3101 Call, write, or FAX Oberon Software for more information on TE/2. ═══ 2.2. Oberon FSHL Command Line Executive ═══ FSHL, \ef' shel\ n. [Flowers' shell, named for Brady Flowers, software designer during the late 20th century]: a program which greatly enhances the power a user has when working at the OS/2 command prompt by adding aliases and macros, enhanced and extended command line recall and editing functions, extended command set, enhanced batch language, and provisions for user-created extensions. FSHL, Oberon Software's Alternative Command Line Executive for OS/2, layers itself over the default OS/2 command line interpreter, CMD.EXE, to provide the user with all of these extended services without sacrificing access to OS/2's base level functionality! These are just some of the features of FSHL: o FSHL aliases allow the user to replace often typed, hard to type, or hard to remember commands with any other command of their preference. o Full featured command line editor adds features to the OS/2 command prompt similar to those found in word processing programs. o Recall previously typed commands: - One at a time - By matching a partially typed command - By selection from a list o Extends the OS/2 batch language to allow access to FSHL's aliases and history. o Dynamic pseudo environment variables to access system information such as the time and date, errorlevels, and window state. o New built-in commands like: - Sweep to execute a given command over an entire directory tree. - Window to control the OS/2 text mode window in which FSHL is running from the command line or a batch file. - Prty to adjust the OS/2 priority at which a program will run. - And lots more! o Extended options on existing OS/2 commands. o All 48 function keys programmable as text macros. o Two separate, powerful programming APIs allow third party developers to extend the basic FSHL command set and to allow applications to call back into FSHL to access its services. o Free technical support via the Oberon BBS! ═══ 2.3. LstPM File Viewer ═══ LstPM is a 32 bit application which can be used for viewing just about any text or data file on your system, either as text (ASCII or EBCDIC) or as a hexadecimal "dump" representation. You can invoke LstPM by installing a WPS program object for it on your desktop or in the folder of your choice and clicking on its icon, from the OS/2 command line with an optional file name as parameter, or by dragging and dropping a selected file or files onto its icon. ═══ 2.4. Consulting Services and Custom Programming ═══ Any of Oberon Software's products may be customized to meet your company's specific needs. Or, if you need something totally new, Oberon Software specializes in the areas of: o Asynch/Telecommunications Software o Interprocess Communications - Network Environment - Standalone o Presentation Manager Based Software o OS/2 Programmer and User Training o Migrating D.O.S. applications to OS/2 Please, contact Oberon Software for references and further information. ═══ 3. PmQwk Offline Mail Reader ═══ Welcome to Oberon Software's Offline mailreader for OS/2 2.0 Presentation Manager! PmQwk is the first and only offline reader for OS/2's Presentation Manager which allows you to truly multitask your offline reading. You can read from any number of conferences, from any number of BBSs simultaneously. You can have multiple replies, from any conference, from any BBS in progress at any given time. There is support for netmail, taglines, regular expression searching, address book, and much more! At last, an offline mail reader that is as good as the operating system it runs on! For additional information, refer to the help for: o Installing PmQWk o Starting PmQwk o Help for BBS List You may also be interested in information regarding: o Registering PmQwk o Oberon Software Products o Copyright, License, and Warranty ═══ 3.1. Installing PmQwk ═══ There are three files which need to be installed on your harddisk for proper operation of PmQwk: PMQWK.EXE PmQwk program executable file. For best results, a dedicated directory should be made for PmQwk. We suggest that you make a directory, on the disk of your choice, by the name PMQWK and copy PMQWK.EXE and TagLines.txt into that directory. You should ensure that this directory is your current working directory while you are running PmQwk as PmQwk will maintain subdirectories for each bulletin board underneath this directory. These files should be placed in a directory specified in your PATH if you wish to run PmQwk from the command line. REGEXPUT.DLL Regular Expression support library. This must be placed in a directory specified in your LIBPATH. PMQWK.HLP PmQwk help file. This must be placed in a directory specified by your HELP environment variable in order to have help active while running PmQwk. Once PmQwk is installed on your hard disk, open the OS/2 Templates Folder, select a Program Object Template with the left mouse button and then, using the right mouse button, drag it onto the desktop or into the folder of your choice. When the Settings Notebook appears, fill in the following: o Path and file name should be set to the full path/name to PMQWK.EXE (i.e., where you place the file in the step above). o Parameters should be left blank - any parameters are ignored. o Working directory should be the directory you placed PMQWK.EXE in. Click on the notebook tab labeled General and, on that page, set the Title to PmQwk or a title of your preferance. See also First Time Startup ═══ 3.1.1. First Time Startup. ═══ You may start PmQwk from the OS/2 command line by first ensuring that the disk and directory containing PmQwk are current and typing "PMQWK" at the system prompt. If you have installed PmQwk into your desktop setup (following the rules for current directory) you may start it that way. Example batch file for starting PmQwk assuming that it is installed in to directory 'D:\PMQWK': @echo off D: CD \PMQWK START /PM /N PMQWK Immediately upon entering PmQwk for the first time, select the menu item labeled Options and the submenu item labeled Paths Select Save Options from the Options menu to make the changes permanent. ═══ 3.2. Starting PmQwk ═══ If you have created a program object, you may start PmQwk by simply clicking on its icon. From the OS/2 command line, you may simply type "PMQWK". See also: Installing PmQwk ═══ 3.3. Registering PmQwk ═══ You can register this wide beta version for $25.00 (US) and receive a free upgrade when the release version comes out. The release version will be $35.00 (US) You may send your check or money order to Oberon Software or users who want to use their Visa/MasterCard to order on line may do so by calling GREATER CHICAGO Online!! at (708) 895-4042. We are participating in their Shareware Support Program for OS/2 Authors. Technical support is available through the Oberon Software bulletin board system or by phone at no charge. A license is required for use of PmQwk by corporations and institutions, and for its commercial distribution. You may obtain a license for the use of PmQwk by contacting Oberon Software. The license is for perpetual, non-exclusive use of one version. Purchase orders and invoicing are acceptable. The fee for a license depends on the estimated number of copies of the program that you will use. The fee applies to one site. For local area networks, one copy must be licensed for each computer that will be using the program on the network. A discount schedule will be made available when the general release is made. ═══ 3.4. Copyright, License, and Warranty ═══ This electronic document and the program files PMQWK.EXE, and PMQWK.HLP, ("the software") are copyrighted by Oberon Software and the author, Brady Flowers. The copyright owner hereby licenses you to use the software given these restrictions: o The program shall be supplied in its original, unmodified form, which includes this documentation; o For-profit use without a license is prohibited; o The program may not be included - or bundled - with other goods or services. Exceptions may be granted upon written request only. o No fee is charged; an exception is granted to not for profit user's groups, which are permitted to charge a small fee (not to exceed $5) for materials, handling, postage, and general overhead. No other organization is permitted to charge any amount for distribution of copies of the software or documentation, or to include copies of the software or documentation with sales of their own products. The Regular Expression Engine provided in the dynamic link library REGEXPUT.DLL, used by PmQwk, is derived from previously copyrighted software. This is the copyright notice from the source code to that section of the software: Copyright (c) 1986 by University of Toronto. Written by Henry Spencer. Not derived from licensed software. Permission is granted to anyone to use this software for any purpose on any computer system, and to redistribute it freely, subject to the following restrictions: 1. The author is not responsible for the consequences of use of this software, no matter how awful, even if they arise from defects in it. 2. The origin of this software must not be misrepresented, either by explicit claim or by omission. 3. Altered versions must be plainly marked as such, and must not be misrepresented as being the original software. Slight alterations were made to Mr. Spencer's software in the process of porting it to the OS/2 environment. Mr. Spencer's original source code is available to the public for download from the Oberon Software User Support BBS. There is no warranty of any kind. By using the software, you agree to this. The software and documentation are: Copyright (C) 1990-1992 by Oberon Software and Brady Flowers Mankato, MN, USA ═══ 4. Help for Keys ═══ The following information is available regarding PmQwk's keyboard interface: o Menus o Dialog Boxes ═══ 4.1. Menu Item Selection ═══ You can select any item from the action bar menu by typing Alt-letter where "letter" is the underlined letter in the menu item text. For example, the File menu item text has the letter "F" underlined so it may be accessed by typing Alt-F. Alternately, you may activate the action bar by pressing and releasing the Alt key or by pressing and releasing the the F10 key. Thereafter, you may select an item by pressing the key corresponding to the underlined letter in the menu item text or by moving the highlight to that item with the arrow keys and pressing Enter when it is highlighting the desired item. When a pulldown menu or a submenu is visible, you may select an item from these menus by pressing the underlined letter key (the Alt key is optional in this case) or by moving the highlight with the arrow keys and pressing Enter. The System Menu (the icon with the mini icon in the upper left corner of the window frame) may be activated from the keyboard by pressing Alt-SpaceBar. You may exit any menu without making a selection by pressing the ESC key. Some menu items have an associated accelerator key associated with them. For example, Alt-F4 is associated with the Close item on the System menu. These accelerator keys are always available whenever PmQwk's main window or its action bar has the focus. ═══ 4.2. Dialog Boxes ═══ Dialog boxes are usually divided into groups of controls (buttons, entry fields, list boxes, etc.). The TAB key will move the highlight from control to control regardless of group boundaries; Shift+TAB will do the same in the reverse direction. The Arrow Keys will move the highlight from control to control always staying within the current group of controls. Buttons are selected by moving the highlight to the desired button and pressing the SpaceBar or, if the button's text contains an underlined letter, by pressing Alt+letter (see also the discussion on accelerator keys in the help for menus Usually a dialog box will have one button with a special highlight. This is the default button which is invoked by pressing Enter. If the dialog has a button labeled Cancel, this button may be invoked by pressing the ESC key. Some controls have special rules for keystrokes: o Entry fields are not exited via the TAB key. To exit an entry field, press Enter (the default button will not be invoked). o When a List Box has the highlight, the arrow keys will move the highlight within the list box up and down (or scroll the list box left and right if it has a horizontal scroll bar). Exit a List Box using the TAB key. o Spin Buttons and Combo Boxes behave analogously to List Boxes. o Select or deselect a Check Box by pressing the SpaceBar while the Check Box has the highlight. o Move the selection within a group of Radio Buttons using the Arrow Keys. ═══ Menu Help for File Menu ═══ Pack, unpack and address book choices available here. ═══ Menu Help for Unpack QWK Packet ═══ This selection will bring you to the Unpack QWK Packet Related Information: Unpacking packets Setting Paths Packing Replies Setting Unpacking Software ═══ Menu Help for Pack Replies ═══ This selection will bring you to the Pack Replies dialog which will allow you to pack replies for one or more BBSs. Related Information: Packing Replies Setting Paths Unpacking packets Setting Packing Software ═══ Menu Help for Address Book ═══ Opens up the PmQwk Address Book. Related Information: Address Book ═══ Menu Help for Exit ═══ Exit PmQwk ═══ Menu Help for Options ═══ Fonts, Colors, Paths, Preferences, and Editors can be selected from here. Related Information: Setting Fonts Setting Colors Setting Paths Setting Preferences Selelcting an Editor ═══ Menu Help for Fonts ═══ Choose fonts for listboxes and text areas. Related Information: Setting Fonts ═══ Menu Help for Colors ═══ Choose colors for listboxes and text areas. Related Information: Setting Colors ═══ Menu Help for Paths ═══ Select paths for packers and unpackers. Related information: Setting Paths Unpacking QWK Packets Packing Replies ═══ Menu Help for Editors ═══ Select an editor for replies. Related information: Setting the editor ═══ Menu Help for Preferences ═══ Set various preferences: Beep on personal messages Show only active conferences Quote attribution text Wrap column Prepend/Strip "Re:" from subject lines No Slider Bar in Reading Window Use Taglines Use Cutline Related information: Selecting preferences ═══ Menu Help for Save Options ═══ Save PmQwk options and preferences. ═══ Menu Help for Help Menu ═══ Various help for PmQwk Offline Reader. ═══ Menu Help for Using Help ═══ Help for the help system. ═══ Menu Help for General Help ═══ General help for PmQwk. ═══ Menu Help for Key Help ═══ Help for keyboard keys in PmQwk. ═══ Menu Help for Help Index ═══ Help index. ═══ Menu Help for Product Information ═══ Information about the current version of PmQwk. ═══ 5. BBS List ═══ The BBS List displays all currently unpacked QWK packets. To read from the conferences in a particular BBS, select the BBS in the list box, and press the Open button, or simply double-click on the BBS name in the list box. Related information: Selecting a Conference to read from Deleting messages from an Open BBS Packet Deleting Open BBS Packets Packing Replies Unpacking QWK Packets ═══ 5.1. Delete BBS Messages ═══ Choose Delete Msgs from the BBS List to remove the unpacked messages from your hard drive. Deleting messages in this way will allow you to save space used up by already read messages, but will allow you to still enter messages for that BBS. PmQwk keeps the small files from the QWK packet which describe the conferences for that BBS. ═══ 5.2. BBS Delete ═══ Choose Delete from the BBS List to delete the files from an open BBS conference. You will also have the option to delete the corresponding QWK packet from your disk as well. If there are unpacked replies, you will be prompted to confirm their deletion. Related information: Deleting QWK packets .* ═══ 6. Selecting a Conference ═══ To begin the process of reading messages, first select a BBS from the BBS List window (if this list is empty, you must first unpack at least one QWK packet! See Unpacking QWK packets). After selecting a BBS, another dialog will appear which will list the available conferences for that BBS. Conferences which contain messages will show the number of messages in them in the Total column, empty conferences will have 0 in the Total column. Each conference has values in the columns indicating the number read, the total number of messages, and the percentage of messages you have read. Please note that, by default, areas which contain no messages are not shown at all. To enable their visibility, use the Preferences dialog and toggle the checkbox labeled Show only active conferences to OFF. There are two extra, pseudo-conferences which appears at the beginning of each BBS's conference list. One is named "Bookmarks". Messages are entered into this conference by pressing the Bookmark button while viewing the message in the reading areas, or by bookmarking it from the "List" dialog of a conference. This conference behaves just as any other conference would, except it will contain messages from several other conferences, and the bookmark button is replaced with a Remove Bookmark button. This is a good conference to put messages into when you want to save them for replying at a later time. The other is named "Replies". This is where all of your entered messages and replies will be kept until they are packed for retransmission to the BBS. It behaves in most ways exactly like a "normal" message window. However, the "Reply" and "Enter" functions are replaced with "Edit" and "Delete". "Edit" will allow you to reedit the message, possibly just the "envelope" information or the entire message text, while "Delete" will erase the currently viewed reply. If this is a netmail message, the Receiver's net address will appear in parentheses after his/her name. ═══ 7. Reading Messages ═══ When you select a conference to view, you will be presented with a window which contains a "message header" at the top of the window, a scrollable region in the central area containing the message text, and a set of buttons at the bottom of the window for initiating various activities. The "message header" contains the following information: the message number, the number of the message it refers to (if any), the position in the list of messages (e.g."#5 of 15"), the sender's name, the addressee's name, the subject of the message, its time and date stamp, whether it is a private or public message, and whether the bulletin board has marked this message as "Seen by you" or not. If this is a net mail message, the sender's net address will be given after his/her name in parentheses. In an effort to provide more functionality using a minimum of screen real estate icon buttons are used for all reading activities. Because icons are often not as inuitive as text, a small staus area in the bottom right corner of the reading screen will show the text for any button as the mouse cursor passes over it. The letter which is capitalized is the 'hotkey' you can press to simulate clicking on that button. Most of the activities are self-explanatory: o Next and Prev will view the next and previous message in the conference respectively. o Page Up and Page Down will scroll the message area a page full, in the same manner as if you had used the scroll bars. This allows you to keep your mouse in the same general area and still be able to navigate completely. o Next Screen will bring you to the next screen of text - whether that is a the equivalent of a Page Down, or a Next operation. If you have Next Message->Next Conference selected from More Preferences then on the last message Next Screen will bring you to the current message in the next conference when you have reached the end of a conference. o Quit closes the window o Help invokes the help display. o Reply and Enter will invoke the reply editor, the difference being that Reply will preset much of the reply header information with data from the current message while Enter will begin the creation of a new, unrelated (as least as far as the QWK format is concerned) message. Related Information: o Listing messages o Copying messages o Swiping taglines o Bookmarks ═══ 7.1. Replying to Messages ═══ To reply to a message, simply invoke the "reply" button while you are viewing the message in question. The message will be placed into a file in "quoted" form and your editor will be invoked on that file. You may edit any part of this file and/or append to the file. While your editor is in the process of editing the reply, a new icon will appear in the main client window: the Active Edit Sessions When you finish editing your reply, you will be returned to PmQwk and given the opportunity to edit the "Envelope" information. This will already have your name, the receivers name, net address (if applicable), the conference for the message, and the subject filled in. You may edit any of these items except your own name. If TagLines are enabled (see Options) you may select a tagline to use from this dialog. If you press "OK" and all of the required fields are filled in, the reply will be saved. If you press "Cancel" the message will be discarded after you confirm that this is your desire. Should you need to reedit a reply message or delete a reply message, invoke the "Replies" pseudo-confernce and perform the desired action from there (see Selecting Conferences) ═══ 7.2. Help for Entering a New Message ═══ Sometimes you may wish to enter a message which is not a reply to any existing message. There are two ways to do this: via the "Enter" button while viewing a conference, and via the "Message" button from the Conference List dialog. In both cases, the procedure that follows is almost exactly that of creating a reply message with the following exceptions: o The "Envelope" dialog will appear both before AND after you edit the message. o No default information is filled in in the "Envelope" dialog the first time; you must specify all fields. Otherwise, for all intents and purposes, a message of this sort is treated exactly like any other reply. ═══ 7.2.1. Active Edit Sessions ═══ This is a list of all current invocations of the editor and a button which will allow you to immediately switch to any of the listed editor sessions. ═══ 7.3. Copying Messages ═══ You may mark areas within the message text using the mouse pointer and copy them to the system clipboard using CONTROL+INSERT or you may use the "Copy" dialog. This dialog allows you to refine how you export the data to a greater degree. You may chose to copy the entire message or just the marked area (if any), you may optionally include header information about the message in the export, and you may copy it directly to a file or to the system clipboard. Related information: o Copying to file o Swiping Taglines ═══ 7.3.1. Copying to File ═══ Selecting the Copy to file option from the Copy dialog will open up a standard file dialog. Select a drive, directory, and either choose an existing file name from the list box (to append or replace) or type the file name in the entry field. ═══ 7.4. Swiping Taglines ═══ PmQwk gives you the ability to swipe taglines directly from messages by using the Copy button while reading a message. To swipe a portion of a message as a tagline, simply mark it with your mouse (click and drag) and press the Copy button. If the text is within the maximum size for a tagline (2 less than the wrap column value from Preferences) the Swipe Marked Text as Tagline button will be enabled. Pressing this button adds the marked text to the end of TAGLINES.TXT . ═══ 7.5. Listing Messages ═══ This invokes a dialog window which, initially contains a list of all messages in the area, their message number, subject, sender, receiver, and time/date. Messages which you have read are marked with a bullet in the leftmost column. You may select a message from this list and press the Go to... button to go immediately to that message. Select the Leave open check box to leave the dialog open while you continue to read messages or perform other tasks. You can size the window, and move the vertical split bar to accomodate your personal preference. PmQwk will save the last size and position of the dialog, and also the location of the split bar. The Filter button in this dialog allows you to view a subset of the messages in the list. You may search for text in "envelope" fields (Sender, Receiver, and Subject) or in the message body itself. The filtering is for purposes of the "List" dialog only, it does not affect the behavior of the message window at all at this time (except as regards jumping to a message). The ability to read only messages which passed through the filter is planned for a future release. ═══ 7.5.1. Filtering Messages ═══ The message filter allows you to search through a conference for messages that have specific characteristics. You can search in one of four fields for text: o Sender o Receiver o Subject o Message There are two search styles: o Case sensitive - which will ignore upper and lower case when selected. o Regular expression (double-click for more information.) Press Search to obtain a list of messages which satisfy the search requirements. You may then read any message just as you would from the regular List dialog. The filtering is for purposes of the "List" dialog only, it does not affect the behavior of the message window at all at this time (except as regards jumping to a message). The ability to read only messages which passed through the filter is planned for a future release. ═══ 7.5.2. Regular Expression ═══ REGULAR EXPRESSION SYNTAX A regular expression is zero or more branches, separated by '|'. It matches anything that matches one of the branches. A branch is zero or more pieces, concatenated. It matches a match for the first, followed by a match for the second, etc. An atom is a regular expression in parentheses (matching a match for the regular expression), a range (see below), '.' (matching any single character), '^' (matching the null string at the beginning of the input string), '$' (matching the null string at the end of the input string), a '\' followed by a single character (matching that character), or a single character with no other significance (matching that character). A piece is an atom possibly followed by '*', '+', or '?'. o An atom followed by '*' matches a sequence of 0 or more matches of the atom. o An atom followed by '+' matches a sequence of 1 or more matches of the atom. o An atom followed by '?' matches a match of the atom, or the null string. A range is a sequence of characters enclosed between square brackets '[' and ']'. It normally matches any single character from the sequence. If the sequence begins with '^', it matches any single character not found in the rest of the sequence. If two characters in the sequence are separated by '-', this is shorthand for the full list of ASCII characters between them (e.g. '[0-9]' matches any decimal digit). To include a literal ']' in the sequence, make it the first character (following a possible '^'). To include a literal '-', make it the first or last character. EXAMPLES The regular expression: "go*d" Would match any of: "gd", "god", "good", "gooooooood". The regular expression: "^[Dd]ear [A-Z]" Would match the first six characters of "Dear John" or "dear Me" if the string is found as the first thing on the line in which it occurs. The regular expression: "[^Dd]ear [A-Z]" Would NOT match either "Dear John" or "dear Me" regardless of where they occurred on the line. It would match the first six characters of either "Bear Country" or "Fear And Loathing" anywhere on the line however. The regular expression: "^[_a-zA-Z].*\(.*\)[ \t]*(/\*.*\*/[ \t]*)*$" Would match any "C" language function definition! If you understand this last example, however, please refer to the note regarding C-style backslash notation AMBIGUITY If a regular expression could match two different parts of the input string, it will match the one which begins earliest. If both begin in the same place but match different lengths, or match the same length in different ways, life gets messier, as follows. In general, the possibilities in a list of branches are considered in left-to-right order, the possibilities for '*', '+', and '?' are considered longest-first, nested constructs are considered from the outermost in, and concatenated constructs are considered leftmost-first. The match that will be chosen is the one that uses the earliest possibility in the first choice that has to be made. If there is more than one choice, the next will be made in the same manner (earliest possibility) subject to the decision on the first choice. And so forth. For example, '(ab|a)b*c' could match 'abc' in one of two ways. The first choice is between 'ab' and 'a'; since 'ab' is earlier, and does lead to a successful overall match, it is chosen. Since the 'b' is already spoken for, the 'b*' must match its last possibility (the empty string) since it must respect the earlier choice. In the particular case where no '|'s are present and there is only one '*', '+', or '?', the net effect is that the longest possible match will be chosen. So 'ab*', presented with 'xabbbby', will match 'abbbb'. Note that if 'ab*' is tried against 'xabyabbbz', it will match 'ab' just after 'x', due to the begins-earliest rule. (In effect, the decision on where to start the match is the first choice to be made, hence subsequent choices must respect it even if this leads them to less-preferred alternatives.) ═══ 7.6. Bookmarks ═══ While reading messages in a conference, you may want to mark some for later reading. PmQwk supports this with a pseudo-conference called Bookmarks You can place a message from any conference into the bookmark conference by pressing the bookmark button . You can remove a message from the bookmark conference by pressing the removal button while in the Bookmark conference. ═══ 8. Unpacking QWK Packets ═══ QWK packets from any number of BBSs may be unpacked simultaneously, although only one packet from any one specific BBS may be opened at a time. Future releases of PmQwk will have the ability to combine packets from the same BBS. Make sure that any and all QWK packets in which you are interested are located in the directory which you specified as your InBound path. Select "Unpack QWK Packet" from the menu or press the "Unpack" button in the BBS List dialog window. You will be presented with a list of valid QWK packets which PmQwk was able to locate in your "InBound" directory. Select one to unpack either by double clicking on the file name and info or by selecting it and pressing the "OK" button. The packet will now be unpacked (if you are about to overwrite another packet, you will be given to opportunity to abort the action). Repeat this procedure for every QWK packet you wish to unpack. If you have never unpacked a packet from this source before, a new item will appear in the BBS List window at this point. Note: The first time you start PmQwk with a valid InBound path, or the first time you select "Unpack QWK Packet" with a valid InBound path, there may be some delay as PmQwk scans the inbound directory for the first time. This delay will only be significant if there are many files matching the pattern "*.q*" in that directory. Only "new files" are scanned so the delay should not be significant on subsequent invocations. ═══ 8.1. Deleting Qwk Packets ═══ You may delete QWK packets which are in your current Inbound directory. Select "Unpack QWK Packet" from the menu or press the "Unpack" button in the BBS List dialog window. You will be presented with a list of valid QWK packets which PmQwk was able to locate in your InBound directory. Select one to delete by clicking on the QWK packet and then pressing the Delete button. You will be prompted for confirmation before the packet is deleted. ═══ 9. Packing Replies ═══ Select Pack Replies from the menu or press the Pack button is the BBS List dialog window. You will be presented with a list of all BBSs which have unpacked reply messages defined. Select one or more from this list and press "OK". For each selection from the previous list, you will be given a dialog wherein you may select the archiver to use for packaging this reply packet and, if a file by the target name already exists in your OutBound directory, the option of overwriting that file or appending the new messages to it. There are possibly two buttons in this dialog labeled List Replies; one which always appears and another which will only be present if there already exists a reply packet in your OutBound path. This second button appears inside of a group box labeled Existing Replies in this case. The first of these buttons will provide a list of Reply Headers (the conference number, receiver, and subject) for each message in the group of new messages the second will do the same for the existing replies. Note, if the existing reply packet was not created using PmQwk, PmQwk will not attempt to list its contents. The button labeled Change Path will invoke a dialog wherein you may override the currently set OutBound path (or reset it to the default value if you have changed it). Press the OK button to begin the packing process, press Cancel to abort the process. ═══ 9.1. Changing Reply Paths ═══ Select the Change Path button from the Save Packet dialog to change the path for a single reply packet. Select Options and then Paths for a permanent outbound path change. ═══ 10. Address Book ═══ The address book feature of PmQwk is activated by choosing Address Book from the Files menu in the main client window of PmQwk. This is a small database wherein you may keep an organized list of names, netmail addresses, and notes for future reference. Each data record in the Address Book consists of four fields: a Search key, and Name, and a Net Address, each of which may be up to 25 characters long plus a Notes field which can hold up to 949 characters of information. The reason for having the Key field separate from the Name field is so that you may enter the name as it is to appear in your reply envelopes (i.e., Name: Barney Rubble or UUCP) and still have your list sorted by something other than first name (i.e., Search Key: Rubble, Barney). There are five buttons in the Address Book window, each of which will initiate an action. Close will close the address book window, New will insert a new, empty record and place the Address Book in edit mode for that record, Edit will place the address book into edit mode for the currently viewed record, Delete will delete the currently displayed record Note: In the BETA release of the program, the user is NOT queried at this point whether or not to really delete the record! By default, the Address Book comes up in 'lookup mode'. You may view the details for any entry by either selecting its key from the listbox at the left of the window or by typing the first character or characters of the key into the entry field labeled Search Key in the upper left of the window. The latter performs an 'incremental search' through the list of keys, that is, if you type 'F', the listbox highlight moves to the first entry which begins with an 'F' (this is not case sensitive), if you then proceed to type an 'L', the highlight moves to the first entry in the listbox which begins with 'FL'. Related information: o Adding Address Book Entries o Editing Address Book Entries o Copying information to the Envelope window ═══ 10.1. Adding/Editing Address Book Entries ═══ You enter 'edit mode' by pressing either the New button or the Edit button. The New button inserts a new, blank record and allows you to edit that record; the 'Edit' button is only available if a valid record is currently displayed and it allows you to edit the currently viewed record. In 'edit mode', the listbox is replaced with a short, informational message and all four of the entry fields (Search key, Name, Net Addr, and Notes) will now accept input. You may type anything into these fields you wish; you may use all of the standard OS/2 editing keys and clipboard functions (i.e., Shift+Delete, Ctrl+Insert, and Shift+Insert for Cut, Copy, and Paste). To save the record as edited, press the Save button, to cancel changes press the Cancel button If you have edited the 'Search Key', the listbox in the 'view mode' window will be rearranged as needed. ═══ 10.2. Addressing envelopes from the Address Book ═══ The OS/2 editing keys which allow you to access the system clipboard are active, that is, you may 'Mark' the name in the Address Book with the mouse or the keyboard, copy it to the clipboard (Ctrl+Insert) and paste it into any OS/2 application which will accept clipboard data. This, of course, includes the the fields in PMQWK's Envelope windows. For direct communication with the Envelope window, however, you may elect to use the built-in "Drag and Drop" interface. If you press and hold Mouse Button Two (usually the right mouse button) while the mouse pointer is over the 'Name" field or field label in the Address Book window, the mouse pointer will change into a small rectangle with the word NAME in it. Still holding mouse button two, move the mouse pointer to the Envelope window in which you wish this name to appear until the superimposed circle with a slash disappears and release the mouse button. The name will replace whatever text is currently in the To: field in the envelope window. If you begin this operation from the Net Addr field or field label in the Address Book window, the mouse pointer will instead read NET and the data will be placed into the Net: field in the envelope window. If you begin from anywhere else in in the Address Book window other than directly over the above mentioned fields or their labels, the mouse pointer will appear as two rectangles, NAME and NET, and the data will go to both fields in the Envelope window. To cancel the drag and drop operation, simply release the mouse button anywhere where it DOES have the circle-slash visible. There is no corresponding drag and drop mechanism for copying data from the Envelope into the Address Book in this release of PmQwk. You may, of course, use the system clipboard to accomplish this as outlined above. ═══ 11. Setting Options ═══ Select Options from the menu bar to do any of the following: 1. Sorting 2. Fonts 3. Colors 4. Paths 5. Editor 6. Preferences 7. More Preferences 8. Save Options ═══ 11.1. Sorting Messages ═══ This dialog allows you to sort your messages by message number, date, time, sender, receiver or subject. You may also define secondary and tertiary sorts to determine the order of messages which have identical values in the field you choose for the primary sort. To sort from high to low, select the Descending check box in any of the sorts, as applicable. If you select the Sort button from the message reading window, you will set the sort order for messages for that conference only. PmQwk will remember your sort order for that conference in the future, and will maintain your messages in that order until you select an alternate sorting method. If you select Default Sorting from the Options pulldown menu, you will be able to set default sorting options for PmQwk. Any conferences for which you have not set up a sort will use the PmQwk default you designate. The OK button will save the sort for the system or conference (as applicable) the Apply button, available only on the Default Sorting dialog will apply the sort to all open conferences, modifying each individual conference's default sorting in the process. ═══ 11.2. Changing Fonts ═══ This dialog allows you to set the fonts which PmQwk will use for message displays and list boxes. Select Options from the menu bar, then Fonts, then either Messages... or List Boxes... to open a standard font dialog. Press Apply to immediately see the result of your font choice in your PmQwk windows without leaving the font dialog. Press Ok to apply the font to your PmQwk windows and dismiss the font dialog. ═══ 11.3. Changing Colors ═══ Select Options from the menu bar, then Colors, to open a dialog which will allow you to change the colors withing PmQwk for message displays and list boxes. Note: In this BETA release of PMQWK, entries appear for "Message HiLited Text" and "Message HiLited Text Background". These setting are NOT functional in this release, the highlighted colors in message displays are a function of the normal, non-hilighted colors. ═══ 11.4. Selecting Paths ═══ Set various paths for PmQwk: o Inbound QWK Packets o Outbound Reply Packets o Packers and Unpackers ═══ 11.4.1. Inbound QWK Packets ═══ Set this item to the name of the directory in which new QWK packets will appear after they have been downloaded from the BBS or on-line services. In general, this will be the download directory which your telecommunications program uses although you may wish to create a new directory specifically for this purpose and move QWK packets into this directory by other means after they have been downloaded. Note: In this version of PmQwk the validity of this path is NOT checked at this point. ═══ 11.4.2. Outbound Reply Packets ═══ Set this item to the name of the directory where you wish PmQwk to deposit packaged reply packets to be uploaded back to the BBS or on-line service. In general, this will be a directory in which your telecommunications program expects to find files for upload. Note: In this version of PmQwk the validity of this path is NOT checked at this point. ═══ 11.4.3. Packers and Unpackers ═══ Fill in as many of these as are applicable with the drive, path, and name of the appropriate archiving program or programs. If they exist in a directory referred to in your PATH environment variable, you may omit the drive and path specification and give only the name of the program file. Note: In this version of PmQwk, these programs names and paths are NOT checked for validity at this point. FURTHER NOTE: in this version of PmQwk, only the first three archivers are supported: PK(UN)ZIP, ARC, and LH. Entries exist for ARJ and ZOO for future use only, they are not used by this version of PmQwk. ═══ 11.5. Setting Editor ═══ You may select your editor of choice for purposes of editing reply messages by selecting the menuitem Editors under the menu bar item Options Type the name of the editor in the indicated field, if the program file is not in a directory referred to in your PATH environment variable, you must include the entire drive and path specification for the program. Once you have specified a valid program name here you will be given the opportunity to select how the program will be executed, i.e., as a Presentation Manager program, in a full screen session, or in a windowed session. Both OS/2 and D.O.S. based editors are supported. The default editor for PmQwk is E.EXE, the OS/2 system editor. Note: Certain editors will cause problems with PmQwk. The OS/2 Enhanced Editor (EPM.EXE) will work correctly with PmQwk if and only if there are no other copies of EPM running on your machine at the time you begin an edit session via PmQwk (this includes other PmQwk edit sessions). The IBM IUO editor, LXPM, does not function correctly for use with PmQwk. ═══ 11.6. Setting Preferences ═══ Preferences is a catchall for a number of semi-related settings. Select any of the following for more information: o Beep on personal messages o Show only active conferences o Attribute Quotes o Wrap Column for Quotes o Prepend "Re:" to response subject lines o Strip existing "Re:" from subject lines o No Slider Bar in Reading Window o Use Taglines o Use PmQwk Cutline See also More Preferences ═══ 11.6.1. Beep on personal messages ═══ If this setting is checked, PmQwk will alert you with a tone whenever you view a message addressed to you. ═══ 11.6.2. Show only active conferences ═══ If this option is set ON (the default), PmQwk will only display those conference names belonging to conferences containing more than zero messages in the "Conference List" dialog. Use this setting if you have a large number of empty conferences listed by a BBS and you do not wish to navigate past them to find the active areas. ═══ 11.6.3. Attribute quotes ═══ If this setting is checked, you specify that you want PmQwk to provide an "Attribution" to the quotes in your reply messages and you may further specify how you wish this Attribution to appear. Type any text you wish into the associated entry field and it will be echoed into your reply messages. There are several special character sequences which you may embed into this text which will cause PmQwk to insert relevant information from the message header: o %s inserts the SENDER's name from the original message o %r inserts the RECEIVER's name from the original message o %j inserts the SUBJECT of the original message o %d inserts the DATE of the original message o %t inserts the TIME of the original message o %_ inserts a line break in the attribution string o %% is used to insert a '%' character in the string. Please note, these codes ARE case sensitive! "%S" will NOT work like "%s", instead it will simply insert the characters "%S" into the attribution string. ═══ 11.6.4. Wrap Column for Quotes ═══ The column at which lines will be broken for purposes of quoting original messages. PmQwk attempts to be intelligent about word boundaries and will try to wrap lines at word breaks. Because messages are reformatted based on your setting for "Wrap Column" both when quoting a message before a reply and when importing your message from the editor back into PmQwk, you should be aware of the algorithm used for message formatting so that you can achieve a pleasing result. The message formatter is paragraph based. It assumes that a new paragraph has started when it encounters either a blank line or an indented line. It will pull the entire paragraph together to make a "best fit" within your defined wrap column. For example, assuming you have the (unlikely) wrap setting of 30, the following text: |---|----|----|----|----|----| Now is the time for all good men to come to the aid of their country. would be reformatted as: |---|----|----|----|----|----| Now is the time for all good men to come to the aid of their country. While the following: |---|----|----|----|----|----| Table data: Column 1 Column 2 -------- -------- Apples Oranges would not be reformatted at all because of the indentation. If you are not aware of the way this behaves, you may end up with undesirable results. For instance, if you entered the following: |---|----|----|----|----|----| Hello Joe! Whatcha know? I just got back from Kokomo! Yours truly, Ira it would end up looking like: |---|----|----|----|----|----| Hello Joe! Whatcha know? I just got back from Kokomo! Yours truly, Ira Use blank lines and indentation to avoid having lines pulled back for you when you don't want this to happen. ═══ 11.6.5. Prepend "Re:" to response subject lines ═══ Automatically place the characters "Re:" at the beginning of subjects lines in replies. "Re:" will NOT be prepended if those characters are already present at the beginning of the subject. ═══ 11.6.6. Strip existing "Re:" from subject lines ═══ Remove the characters "Re:" and any white space following from subject lines in replies. Note that this option and the Prepend option are NOT mutually exclusive! If they are both checked, subject lines in replies will always contain one and only one "Re:" if neither is checked, no subject line is ever altered by PmQwk. Note further that you have the ability to add or remove any characters you wish from a subject line via the "Envelope" dialog; these setting are provided as a convenience. ═══ 11.6.7. Slider Bar in Reading Window ═══ You may wish to remove the slider bar from the reading window for one of two reasons. 1. You don't use it and would like the screen 'real estate' back for the message itself. 2. You have a version of the OS/2 2.1 beta which has a bug with slider bars which PmQwk demonstrates beautifully. If you are disabling it because of the bug - be sure to do so before opening a single conference. The change only takes effect for conferences opened or reopened since you selected this preference. Note: You may also remove the slider bar with a startup parameter of /2 or -2. ═══ 11.6.8. Use Taglines ═══ If this option is checked, PmQwk will look in the same directory that contains the PMQWK.EXE file for a file named "TagLines.txt". If it is found it will use this for its source of tag lines (humorous or provocative short quotes which will be appended to your outgoing messages) and the "TagLine" drop-down list will be enabled in the various "Envelope" dialogs. From there you may select a line from the list, type in a fresh one "on the fly", or erase it entirely. The TagLines.txt file is a flat ASCII file containing one tagline per line of file; you may edit this file with any text editor. Taglines should not be longer than about 60 or 70 characters. ═══ 11.6.9. Use PmQwk Cutline ═══ If this option is set OFF then PmQwk will not append it's own "signature line" to your outgoing messages. ═══ 11.7. Setting More Preferences ═══ o Last Message in Conference Options o Tagline Options o Message Options ═══ 11.7.1. Last Message in Conference Options ═══ Several options are available to you when you reach the last message of a conference.. Select Beep on last message to cause a unique beep whenever you reach the last message of any conference. The beep is distinct from the beep you will get on a personal message (if you have selected that option.) Select Focus Moves to Previous Button to cause the 'focus' to move to the Previous button when you reach the last message. This has the effect of displaying messages in reverse order when you are simply pressing the Enter key. This was the way earlier versions of PmQwk operated. Select Focus Moves to Quit Button to cause the 'focus' to move to the Quit button when you reach the last message. If you are pressing the Enter key to navigate through the messages, this has the effect of quitting the conference you are reading when you have reached the end. Focus will move to the Select Conferences dialog if it is open. Select 'Next Message'->'Next Conference' to cause PmQwk to go to the current message in the next conference when you have reached the end of a conference. Focus will stay on the Next button, but on the last message of a conference pressing the Next button will cause the current conference to close, and the next conference to open, if it wasn't already, and to display the current message (this will be the first message if it hasn't been opened before.) ═══ 11.7.2. Tagline Options ═══ Select Start with First Tagline to have PmQwk start using Taglines from the beginning of your tagline file each time you start PmQwk. Select Start with Last Used Tagline to have PmQwk start up with the tagline you last used. Note: Neither one of these settings is particularly applicable if you have selected random taglines. Select Select Taglines Sequentially to have PmQwk select taglines in the order they appear in the tagline file. Select Select Taglines Randomly to have PmQwk randomly select taglines from your tagline file. Note: Because 'random' means random, sometimes you will get a duplicate tagline before you see every tagline used. ═══ 11.7.3. Message Options ═══ No formatting on reply text allows you to tell PmQwk to leave your replies as is. If your editor is configured to put hard returns and margins appropriately, you may want to select this. Note: Absolutely no formatting is done to your replies. Please verify that your editor is doing all the appropriate formatting for you by checking your replies both on PmQwk, as well as on the BBS you upload to. Some BBSes will truncate if you have not formatted with hard returns, etc. Convert Subject/To/From to uppercase is meant to be used for BBSes which don't handle lower or mixed case in these fields, well or at all. This must be selected prior to starting a reply, or re-editing a reply. ═══ 11.8. Conference Window Size Default ═══ Select this option from the Options pull down menu to set a default size for the read message window. All conferences save their last size and position, but this allows you to decide what the initial sizing of this window will be. ═══ 11.9. Saving Options ═══ All options discussed in the Preferences section may be saved semi-permanently in an initialization file by selecting this option. You may always change an option again and resave it. If you change options and do not select "Save options" before you attempt to exit PmQwk, you will be alerted to this fact and given the opportunity to do so at that point. Options are saved in a file named PMQWK.INI in the same directory as PMQWK.EXE. If you've really made a mess of your settings and wish to "start from scratch" just delete this file while PmQwk is not running and restart the program. Warning: If you have used an earlier (16-bit) beta version of PmQwk, you MUST delete your PMQWK.INI file before running this version and then use the current version to reset your options. ═══ 12. Message Envelope ═══ When you finish editing your reply, you will be returned to PmQwk and given the opportunity to edit the "Envelope" information. This will already have your name, the receivers name, net address (if applicable), the conference for the message, and the subject filled in. You may edit any of these items except your own name. If TagLines are enabled you may select a tagline to use from this dialog. If you press "OK" and all of the required fields are filled in, the reply will be saved. If you press "Cancel" the message will be discarded after you confirm that this is your desire. ═══ 13. Setting Icons for Confs and BBSs ═══ Though not on any menu within this version of PmQwk, you may specify your own custom icons and attach them to any "BBS Conference List" dialog or to any "Conference" dialog. You must use OS/2 version 1.3 compatible color or black and white icon files (.ICO). To do this, create a directory underneath the directory containing PMQWK.EXE named "PMQIcons" and place all of your custom icon files in this directory. PmQwk will determine how to use these icons by the names you give the files: o To attach an icon to a BBS (Conference List Dialog) give the icon file the same "first name" as the BBS id and an extension of .ICO. (Example: A BBS id might be "FERNWOOD", name the icon file "FERNWOOD.ICO"). o To attach an icon to a specific conference for a specific BBS, use the same first name as above but give the file an extension which is the conference number, left padded to three characters with zeros (Example: to attach an icon to conference #5 for the "FERNWOOD" BBS, name the icon file "FERNWOOD.005"). o To attach an icon to the "Personal Messages" conference, do as above but give the icon file the extension ".PER". To attach it to the "Replies" pseudo-conference, give it the extension ".ANS". Note: This procedure will be built into the program and made more easy for the average user in the future. Do not attempt this procedure if the above discussion made little or no sense to you! ═══ ═══ Oberon Software 518 Blue Earth Street Mankato, MN 56001-2142 USA Phone: 507-388-7001 FAX: 507-388-7568 BBS: 507-388-1154 CompuServe: 72510,3500 GEnie: B.FLOWERS MCI Mail: oberon/413-5847 ═══ ═══ Fidonet netmail: Kimberly Bobrow @ 1:109/347 Internet address: Kimberly.Bobrow@kimberly.bobrow@f347.n109.z1.fidonet.org OS/2 Shareware BBS ID: Kimberly Bobrow Oberon Software BBS ID: Kimberly Bobrow Voice message: (212) 465-3367 [USA] ═══ ═══ Please note that the '\t' used in the example to imply a TAB character is there for illustration only because an actual TAB character is difficult to display within the context of the IPF. The C-style backslash notation for tabs, newlines, etc. is NOT supported by this regular exression engine. Because of the '^' and '$' metacharacters and the fact that matches cannot occur across line boundaries, the loss of '\n' and '\r' should be no hardship. If you need to specify a TAB, you may simply enter an actual TAB character.